# !/bin/bash
# 该脚本用于打包 prdt_doc_to_rec_deploy 项目

set -e

# 默认到脚本上级目录执行
cd $(dirname $0)
cd ..
echo "当前执行目录: $(pwd)"

# 获取当前日期和时间作为版本号的一部分
VERSION_DATE=$(date +%Y%m%d%H%M%S)
# 打包目录
OUTPUT_DIR="prdt_doc_to_rec_deploy_${VERSION_DATE}"

# 清理缓存
find . -type d -name "__pycache__" -exec rm -rf {} + &&
  find . -type f -name "*.pyc" -delete &&
  find . -type f -name "*.pyo" -delete &&
  find . -type f -name "*~" -delete &&
  find . -type f -name "version-*.txt" -delete &&
  rm -rf build/ dist/ app/logs prdvenv logs/ output/ app/assets app/models
# find . -type d -name "prdt_doc_to_rec_deploy*" -delete &&

# 获取精确的依赖列表
# 如果不存在requirements-linux-cpu.txt，则生成
if [ ! -f "additional_deps/requirements-linux-cpu.txt" ]; then
  pip list --format=freeze >additional_deps/requirements-linux-cpu.txt
fi

# 如果未下载依赖，则下载依赖
# 对应环境下载依赖，默认cpu版，建议对应系统+架构平台docker内执行
if [ ! -d "additional_deps/dependencies" ]; then
  pip download --dest additional_deps/dependencies -r additional_deps/requirements-linux-cpu.txt
fi

# 创建目录结构
mkdir -p ${OUTPUT_DIR}
# 将相关文件放入打包目录
cp -r app input README.md pkg requirements-cpu.txt deploy_prod.sh glibc_run.sh stop.sh ${OUTPUT_DIR}/
# 将目录压缩
tar --exclude='*/__pycache__/*' -czvf prdt_doc_to_rec_deploy_$VERSION_DATE.tar.gz ${OUTPUT_DIR}/

# 单独打包依赖 additional_deps
tar --exclude='*/__pycache__/*' -czvf additional_deps.tar.gz additional_deps

# 清理打包目录
rm -rf ${OUTPUT_DIR}
